home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 November / Macworld (1999-11).dmg / Updaters / WhiteCap 3.0.4 / WhiteCap Source.sit / WhiteCap Source / Common / General Tools / ListSocket.cpp < prev    next >
C/C++ Source or Header  |  1999-07-13  |  3KB  |  231 lines

  1. #include "ListSocket.h"
  2.  
  3. #include "XLongList.h"
  4.  
  5.  
  6. void ListSocket::MoveSelected( long, long ) {
  7.     
  8. }
  9.         
  10.  
  11.  
  12.  
  13. bool ListSocket::CheckInsertPt( long&, long& ) {
  14.     return false;
  15.  
  16. }
  17.         
  18.  
  19. void ListSocket::DeleteSelected() {
  20.  
  21. }
  22.  
  23.  
  24. void ListSocket::SetInsertionPt( long inCellNum, long inDepth ) {
  25.  
  26.     mInsertionPt        = inCellNum;
  27.     mInsertionDepth        = inDepth;
  28. }
  29.  
  30.  
  31.  
  32. long ListSocket::GetFirstSelected() {
  33.     long i, stop = NumCells();
  34.     
  35.     for ( i = 1; i <= stop; i++ ) {
  36.         if ( IsSelected( i ) )
  37.             return i;
  38.     }
  39.     
  40.     return 0;
  41. }
  42.  
  43.  
  44.  
  45. long ListSocket::GetLastSelected() {
  46.     long i;
  47.     
  48.     for ( i = NumCells(); i > 0; i-- ) {
  49.         if ( IsSelected( i ) )
  50.             return i;
  51.     }
  52.     
  53.     return 0;
  54. }
  55.  
  56.  
  57.  
  58. long ListSocket::NumSelected() {
  59.     long    i, numSelected = 0;
  60.     
  61.     for ( i = NumCells(); i > 0; i-- ) 
  62.         if ( IsSelected( i ) )
  63.             numSelected++;
  64.             
  65.             
  66.     return numSelected;
  67. }
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76. void ListSocket::SetSelectAll( bool inAreSelected ) {
  77.     int i, stop = NumCells();
  78.     
  79.     for ( i = 1; i <= stop; i++ ) {
  80.         SetSelected( i, inAreSelected );
  81.     }
  82.  
  83. }
  84.         
  85.  
  86. void ListSocket::SetEnabled( long, bool ) {
  87.  
  88.     
  89. }
  90.  
  91. bool ListSocket::IsEnabled( long ) {
  92.     return true;
  93. }
  94.  
  95.  
  96.  
  97.  
  98. void ListSocket::EnableAll() {
  99.     int i, stop = NumCells();
  100.     
  101.     for ( i = 1; i <= stop; i++ ) {
  102.         SetEnabled( i, true );
  103.     }
  104.  
  105. }
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118. XLongList* ListSocket::ManageClick( long inCell, bool inShift, bool inCmd, bool inDeselectRest ) {
  119.     static XLongList refreshList;
  120.     int i, e;
  121.     
  122.  
  123.     refreshList.RemoveAll();
  124.     
  125.  
  126.     if ( inShift ) {
  127.         if ( mInsertionPt < inCell ) {
  128.             i = mInsertionPt;
  129.             e = inCell;  }
  130.         else {
  131.             e = mInsertionPt;
  132.             i = inCell;
  133.         }
  134.         for ( ; i <= e; i++ ) {
  135.             if ( !  IsSelected( i ) ) {
  136.                 SetSelected( i, true );
  137.                 refreshList.Add( i );
  138.             }
  139.         } }
  140.     else {
  141.         refreshList.Add( inCell );
  142.         
  143.         if ( inCmd ) 
  144.             SetSelected( inCell, ! IsSelected( inCell ) ); 
  145.         else if (  ! IsSelected( inCell ) || inDeselectRest ) {
  146.             for ( i = NumCells(); i > 0; i-- ) {
  147.                 if ( i == inCell ) 
  148.                     SetSelected( i, true );
  149.                 else if ( IsSelected( i ) ) {
  150.                     SetSelected( i, false );
  151.                     refreshList.Add( i );
  152.                 }
  153.             }
  154.         }
  155.     }
  156.     
  157.     SetInsertionPt( inCell, 0 );
  158.     
  159.     return &refreshList;
  160. }
  161.     
  162.  
  163.  
  164.  
  165. XLongList* ListSocket::ArrowSelection( int inCellDelta ) {
  166.     long     n        = GetFirstSelected() + inCellDelta;
  167.     long     max        = NumCells();
  168.     
  169.     if ( n < 1 )
  170.         n = 1;
  171.         
  172.     if ( n > max )
  173.         n = max;
  174.         
  175.     return ManageClick( n, false, false, false );
  176. }
  177.  
  178.     
  179.     
  180.     
  181. long ListSocket::GUINumToCellNum( long inGUINum ) {
  182.     return inGUINum;
  183. }
  184.  
  185.  
  186.  
  187.  
  188.     
  189. bool ListSocket::CanCutToClip() {
  190.     if ( CanClear() )
  191.         return CanCopyToClip();
  192.     else
  193.         return false;
  194. }
  195.  
  196.  
  197. bool ListSocket::CanPasteFromClip( Clipboard& ) { 
  198.     return false;        
  199. }
  200.  
  201.  
  202. bool ListSocket::CanCopyToClip() {
  203.     return GetFirstSelected() > 0;
  204. }
  205.  
  206.  
  207.     
  208. void ListSocket::Clear() {
  209.     DeleteSelected();
  210. }
  211.  
  212.  
  213.     
  214. void ListSocket::CutToClip( Clipboard& outClip ) {
  215.     CopyToClip( outClip );
  216.     Clear();
  217. }
  218.  
  219.  
  220. void ListSocket::CopyToClip( Clipboard& ) {
  221.  
  222. }
  223.  
  224.  
  225.  
  226. void ListSocket::PasteFromClip( Clipboard& ) {
  227.  
  228. }
  229.  
  230.  
  231.